# -*- coding: utf-8 -*-
"""
Created on Sun Aug 13 12:36:49 2023

@author: skunk69
"""

import json

chinese_name = u'状态-特质焦虑问卷'
english_name = 'State-Trait Anxiety Inventory'
abbreviation = 'STAI'
category = u'精神病学临床量表'

outline = u"""状态焦虑描述一种不愉快的情绪体验，如紧张、恐惧、忧虑和神经质，伴有植物神经系统的功能亢进，一般为短暂性的。特质焦虑则用来描述相对稳定的，作为一种人格特质且具有个体差异的焦虑倾向。
状态-特质焦虑问卷（State-Trait Anxiety Inventory, STAI），由Spielberger等人编制，首版(STAI-FormX)于1970年问世，曾经过2000项研究，涉及医学、教育、心理学及其他科学等方面。作者于1979年对STAI-FormX进行修，1980年修订版STAI-FormY开始应用，1988年译成中文。该量表可以分别评定状态焦虑与特质焦虑，优于其他焦虑量表。量表为自评测验，内容简明，操作方便，易被受试者接受和掌握。STAI中译版本信效度满意，适用于我国基本情况，且应用性广泛。"""

with open('STAI.txt','r',encoding='utf-8') as f:
    lines = f.readlines()
    f.close()

instruction = u"""下面列出的是一些人们常常用来描述他们自己的陈述，请阅读每一个陈述，然后在“完全没有”、“有些”、“中等程度”、“非常明显”中选择最适当的一项来表示你现在的感觉，也就是你此时此刻最恰当的感觉。没有对或错的回答，不要对任何一个陈述花太多的时间去考虑，但所给的回答应该是你现在最恰当的感觉。"""

items = {}
for num,line in enumerate(lines):
    if num > 19:break
    key,value = line.strip().split('.',maxsplit=1)
    items[key.strip()] = value.strip()

reverse_items = [1,2,5,8,10,11,15,16,19,20]
scales = []
scales_items = []
factors = []
factors_scales = []
rating = [u'完全没有',u'有些',u'中等程度',u'非常明显']
score_rules = list(range(1,5))

state = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

instruction = u"""下面列出的是一些人们常常用来描述他们自己的陈述，请阅读每一个陈述，然后在“几乎没有”、“有些”、“经常”、“几乎总是如此”中选择最适当的一项来表示你现在的感觉，也就是你此时此刻最恰当的感觉。没有对或错的回答，不要对任何一个陈述花太多的时间去考虑，但所给的回答应该是你现在最恰当的感觉。"""

items = {}
for num,line in enumerate(lines):
    if num < 20:continue
    key,value = line.strip().split('.',maxsplit=1)
    items[key.strip()] = value.strip()

reverse_items = [21,23,24,26,27,30,33,34,36,39]
scales = []
scales_items = []
factors = []
factors_scales = []
rating = [u'几乎没有',u'有些',u'经常',u'几乎总是如此']
score_rules = list(range(1,5))

trait = {
    'instruction':instruction,
    'items':items,
    'reverse_items':reverse_items,
    'scales':scales,
    'scales_items':scales_items,
    'factors':factors,
    'factors_scales':factors_scales,
    'rating':rating,
    'score_rules':score_rules       
    }

contents = {'state':state,'trait':trait}

implementation = u"""STAI是一种自评量表，适用于具有焦虑症状的成年人。可广泛应用于评定内科、外科、心身疾病及精神病人的焦虑情绪；也可用来筛查各种特定人群的有关焦虑问题；以及评价心理治疗、药物治疗的效果。"""

reliability = u"""由量表原作者Spielberger在高中生、大学生、新兵和成年工作人员的大样本人群中进行了STAI现场测试，制定了常模。内部一致性系数：特质焦虑问卷为0.86~0.92，状态焦虑问卷为0.83~0.92。"""
validity = u"""量表原作者Spielberger的测试样本的效度检验结果表明，STAI的一致性、汇聚性、区分性和结构性比较满意。对数据进行因子分析，发现两个分量表均包含焦虑-存在和焦虑-缺如两个公共因子。国内研究也得到了与量表原作者近似的结果。"""
measurements = {'reliability':reliability,'validity':validity}

interpretation = u"""首先将反向题目反向计分，然后分别计算状态焦虑问卷和特质焦虑问卷的各20个条目的总分，最小值20分，最大值80分。状态焦虑问卷总分反映受试者当前焦虑症状的严重程度，特质焦虑问卷总分反映受试者一贯或平时的焦虑情况。"""

applications = u"""量表原作者在测试了美国正常成人群体之后，制定了按性别、年龄的常模。许多研究结果显示，STAI的应用性广泛，中译本信效度均满意，适合在我国使用。"""

this_scale = {
    'chinese_name':chinese_name,
    'english_name':english_name,
    'abbreviation':abbreviation,
    'category':category,
    'outline':outline,
    'contents':contents,
    'implementation':implementation,
    'measurements':measurements,
    'interpretation':interpretation,
    'applications':applications    
    }

with open(abbreviation+'.json','w+',encoding='utf-8') as f:
    json.dump(this_scale,f,indent=2,ensure_ascii=False)